package org.dromara.common.vcp.service;

import java.util.List;
import java.util.Map;

public interface SzApiService {

    /**
     * 获取视频流
     * @param deviceCode    设备编码
     * @param params        参数
     * @return              视频流
     */
    String getLiveUri(String deviceCode, String params);


    /**
     * 获取1400设备图片列表
     *
     * @return 图片地址
     */
    String queryDeviceImageData(String phone, String deviceCode, String startTime, String endTime,
                                              String imageType, String imageTypeGroup, Integer size);

    /**
     * 设备订阅报警信息
     *
     * @param deviceCode  设备编号
     * @param callBackUrl 回调地址
     * @param alertType   告警类型：订阅多个告警类型用","分隔
     *                    1是设备离线，10是设备上线，2 画面变动，11有人移动，3画面异常巡检，4时光缩影，5区域入侵，12客流统计，13厨帽识别，
     *                    14抽烟识别，15口罩识别，16玩手机识别，17火情识别，7人脸布控，6车牌布控，
     *                    21大象识别；22电动车
     */
    String subscribe(String deviceCode, String callBackUrl, String alertType);

    /**
     * 设备退订
     * @param deviceCode    设备编码
     * @param alertType     告警类型：订阅多个告警类型用","分隔
     *                         1是设备离线，10是设备上线，2 画面变动，11有人移动，3画面异常巡检，4时光缩影，5区域入侵，12客流统计，13厨帽识别，
     *                         14抽烟识别，15口罩识别，16玩手机识别，17火情识别，7人脸布控，6车牌布控，
     *                         21大象识别；22电动车
     */
    String unsubscribe(String deviceCode, String alertType);

    /**
     * 获取设备状态
     * @param deviceCodes   设备编码集合，以逗号分割
     * @return              设备状态
     */
    List<Map<String, Object>> getDeviceStatus(String deviceCodes);

    /**
     * 根据报警消息ID查询详细的报警信息
     *
     * @param deviceCode    设备
     * @param msgId         报警消息ID
     * @param alertType     报警的类型
     */
    String getAlertInfoDetail(String deviceCode, String msgId, Integer alertType);
}
